package stack

/**
 * @author liujun
 * @date 2021-11-23 22:01
 * @author—Email liujunfirst@outlook.com
 * @description 栈
 * 1、出栈
 * 2、入栈
 * 3、获取栈顶元素
 * 4、栈判空
 * 5、查找值
 * 6、获取栈中实际容量
 * 7、获取栈中最大容量
 * 8、扩容
 * @blogURL
 */

type Stacklj interface {
	/**
	 * 出栈操作
	 *
	 * @return 栈顶元素
	 */
	pop() int

	/**
	 * 入栈操作
	 *
	 * @param value 入栈值
	 * @return 入栈是否成功
	 */
	push(value int) bool

	/**
	 * 获取栈顶元素
	 *
	 * @return 栈顶元素
	 */
	peek() int

	/**
	 * 判空操作
	 *
	 * @return 栈是否为空
	 */
	empty() bool

	/**
	 * 查找某元素
	 *
	 * @param value 查找值
	 * @return 查找是否成功
	 */
	search(value int) bool

	/**
	 * 获取栈中实际的元素数量
	 *
	 * @return 栈中实际的元素数量
	 */
	getRealsize() int

	/**
	 * 获取栈的最大元素数量
	 *
	 * @return 栈的最大元素数量
	 */
	getMaxsize() int

	/**
	 * 扩容操作
	 */
	resize()
}
